import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.util.Random;

/**
 * @author mazhaopeng
 */
public class NewGuessNumber {
    public static Scanner scanner = new Scanner(System.in);
    public static ArrayList<Integer> answers = new ArrayList<>();
    public static ArrayList<Integer> guesses = new ArrayList<>();
    private static int NUMBER_AMOUNT = 4;
    // 下⽅代码已经省略
    private static Random random = new Random();
    public static ArrayList<Integer> NGuessNumber(){
        while(answers.size() < NUMBER_AMOUNT) {
            int answer = random.nextInt(10); // 此处做了修改
            if(!answers.contains(answer)){
                answers.add(answer);
            }
        }
        return answers;
    }

    public static void main(String[] args) {
        System.out.println("欢迎来到新猜数字游戏！");
        while (true) {
            while (answers.size() < 4) {
                int answer = (int) (Math.random() * 10);
                if (!answers.contains(answer)) {
                    answers.add(answer);
                }
            }
            while (true) {
                System.out.println("请输入4个0-9之间不重复的整数:");
                guesses.clear();
                while (guesses.size() < 4) {
                    int guess;
                    try {
                        guess = scanner.nextInt();
                    } catch (InputMismatchException e) {
                        System.out.println("请输入数字！");
                        scanner.next();
                        continue;
                    }
                    if (guess < 0 || guess > 9) {
                        System.out.println("请输入0-9之间的整数！");
                        continue;
                    }
                    if (!guesses.contains(guess)) {
                        guesses.add(guess);
                    } else {
                        System.out.println("数字已经存在！");
                    }
                }

                int a = 0;
                for (int i = 0; i < 4; i++) {
                    if (answers.get(i).equals(guesses.get(i))) {
                        a = a + 1;
                    }
                }

                int b = 0;
                for (int i = 0; i < 4; i++) {
                    if (answers.contains(guesses.get(i)) && !answers.get(i).equals(guesses.get(i))) {
                        b = b + 1;
                    }
                }

                System.out.println(a + "A" + b + "B");
                if (a == 4 && b == 0) {
                    System.out.println("恭喜你！猜对啦！");
                    break;
                }
            }
            System.out.println("再玩儿一次吗？（y/n）");
            String again = scanner.next();
            if (!again.equalsIgnoreCase("y")) {
                break;
            }
        }
    }
    public static ArrayList<Integer> generateAnswer() {
        while(answers.size() < 4) {
            int answer = (int)(Math.random() * 10);
            if(!answers.contains(answer)){
                answers.add(answer);
            }
        }
        return answers;
    }
    public static ArrayList<Integer> receiveGuesses() {
        while(guesses.size() < 4) {
            int guess;
            try{
                guess = scanner.nextInt();
            }catch (InputMismatchException e){
                System.out.println("请输⼊数字！");
                scanner.next();
                continue;
            }
            if(guess < 0 || guess > 9){
                System.out.println("请输⼊0-9之间的整数！");
                continue;
            }
            if(!guesses.contains(guess)){
                guesses.add(guess);
            }else {
                System.out.println("数字已经存在！");
            }
        }
        return guesses;
    }
    public static int getA() {
        int a = 0;
        for(int i = 0; i < 4; i++){
            if(answers.get(i).equals(guesses.get(i))){
                a = a + 1;
            }
        }
        return a;
    }
    public static int getB(){
        int b = 0;
        for(int i = 0; i < 4; i++){
            if(answers.contains(guesses.get(i)) && !answers.get(i).equals(guesses.get(i))){
                b = b + 1;
            }
        }
        return b;
    }

}